﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using Clinica_Frba.UserInterface.TDAs;

namespace Clinica_Frba.UserInterface.ABM.Profesional
{
    public partial class detalles_profesional : Form
    {
        Dictionary<string, string> datosProfesional;
        Dictionary<string, string> especialidades_tipo;
        public detalles_profesional(string dniProfesional)
        {
            InitializeComponent();
            obtenerDatosProfesional(dniProfesional);
            this.nom_y_ap_value.Text = this.datosProfesional["pers_apellido"]+ ", " + this.datosProfesional["pers_nombre"];
            llenarDatosPersonales();
            llenarDatosProfesionales();
            llenarDatosGestionUsuario();
        }

        private void llenarDatosPersonales()
        {
            this.nombre_value.Text = this.datosProfesional["pers_nombre"];
            this.apellido_value.Text = this.datosProfesional["pers_apellido"];
            this.dni_value.Text = this.datosProfesional["pers_dni"];
            this.direccion_value.Text = this.datosProfesional["pers_direccion"];
            this.telefono_value.Text = this.datosProfesional["pers_telefono"];
            this.fecha_nac_value.Text = this.datosProfesional["Fecha_Nacimiento"].Substring(0, 10) ;
            this.mail_value.Text = this.datosProfesional["pers_mail"];
            this.sexo_value.Text = this.datosProfesional["pers_sexo"];
        }

        private void llenarDatosProfesionales()
        {
            this.matricula_value.Text = this.datosProfesional["prof_matricula"];
            foreach (KeyValuePair<string, string> kvp in this.especialidades_tipo)
                this.especialidades_listBox.Items.Add(kvp.Key + " (" + kvp.Value + ")");
        }

        private void llenarDatosGestionUsuario()
        {
            this.username_value.Text = this.datosProfesional["prof_username"];
            
        }

        private void obtenerDatosProfesional(string dniProf)
        {
            this.datosProfesional = new Dictionary<string, string>();
            this.especialidades_tipo = new Dictionary<string, string>();
            string conString = "Data Source=LocalHost\\SQLSERVER2008;Initial Catalog=GD2C2013;Integrated Security= True";
            
            string consulta1 = "SELECT	pers_dni,pers_apellido,pers_nombre,"+
                        "pers_direccion,pers_estado_civil,CAST(pers_fecha_nac AS date) as [Fecha_Nacimiento], " +
		                "pers_mail,pers_sexo,pers_telefono, "+
		                "prof_matricula,prof_username "+
                        "FROM vacuna_gdd.Persona,vacuna_gdd.Profesional "+
                        "WHERE prof_dni_persona=pers_dni AND prof_dni_persona="+dniProf;

            string consulta2 = "SELECT  espe_descripcion as [Especialidad],te_descripcion as [Tipo_Especialidad] "+
                        "FROM	vacuna_gdd.Especialidad,"+
		                "vacuna_gdd.profesional_especialidad,"+
		                "vacuna_gdd.Tipo_especialidad,"+
		                "vacuna_gdd.Profesional "+
                        "WHERE	ep_especialidad_id = espe_id AND "+
                        "ep_prof_id = prof_id AND "+
		                "te_id = espe_tipo_espe AND "+
		                "prof_dni_persona="+dniProf;
            using (SqlConnection conn = new SqlConnection(conString))
            {
                SqlCommand cmd = new SqlCommand(consulta1, conn);
                try
                {
                    conn.Open();
                    SqlDataAdapter data = new SqlDataAdapter(consulta1, conn);
                    DataSet set = new DataSet();
                    data.Fill(set, "tablaprueba");
                    
                    foreach (DataTable table in set.Tables)
                    {
                        foreach (DataRow row in table.Rows)
                        {
                            foreach (DataColumn column in table.Columns)
                            {
                                string rowColumn = row[column].ToString();
                                //if (rowColumn != "")
                                //{
                                    this.datosProfesional.Add(column.ToString(), rowColumn);
                                    Console.WriteLine(column.ToString() + " " + rowColumn);
                                //}
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                SqlCommand cmd2 = new SqlCommand(consulta2, conn);
                try
                {
                    //conn.Open();
                    SqlDataAdapter data2 = new SqlDataAdapter(consulta2, conn);
                    DataSet set2 = new DataSet();
                    data2.Fill(set2, "tablaprueba2");

                    foreach (DataTable table in set2.Tables)
                    {
                        foreach (DataRow row in table.Rows)
                        {
                            this.especialidades_tipo.Add(row[table.Columns["Especialidad"]].ToString(), row[table.Columns["Tipo_Especialidad"]].ToString());
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }

        private void cerrar_btn_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void ver_agenda_btn_Click(object sender, EventArgs e)
        {
            string conString = "Data Source=LocalHost\\SQLSERVER2008;Initial Catalog=GD2C2013;Integrated Security= True";
            string consulta = "SELECT agen_rango_fechas,agen_rango_horarios " +
                "FROM vacuna_gdd.Agenda,vacuna_gdd.Profesional " +
                "WHERE agen_prof_id=prof_id AND prof_dni_persona=" + this.dni_value.Text;
            
            string rangoFechas = "";
            string rangoHorarios = "";
            using (SqlConnection conn = new SqlConnection(conString))
            {
                SqlCommand cmd = new SqlCommand(consulta, conn);
                try
                {
                    conn.Open();
                    SqlDataAdapter data = new SqlDataAdapter(consulta, conn);
                    DataSet set = new DataSet();
                    data.Fill(set, "tablaprueba");

                    foreach (DataTable table in set.Tables)
                    {
                        foreach (DataRow row in table.Rows)
                        {
                            rangoFechas = row[table.Columns["agen_rango_fechas"]].ToString();
                            rangoHorarios = row[table.Columns["agen_rango_horarios"]].ToString();
                            
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.WriteLine(rangoHorarios+ " " + rangoFechas);
                Agenda_tda agenda = new Agenda_tda(rangoFechas,rangoHorarios);
                string hora_reSerializados = agenda.serializeHorarios();
                string fecha_reSerializados = agenda.serializeFechas();
                Console.WriteLine(hora_reSerializados + " " + fecha_reSerializados);
                agenda.mostrarDispoFechas();
                
            }

        }
    }
}
